/******************************************************************************* * Copyright (c) 2002, 2005 Object Factory Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Object Factory Inc. - Initial implementation *******************************************************************************/ package org.eclipse.ant.internal.ui.dtd; import org.eclipse.ant.internal.ui.dtd.schema.Nfm; /** * Content model. This is the printable version of the model. The walkable version is the IDfm. * * @author Bob Foster */ public interface IModel { public static final int UNKNOWN = 0; public static final int SEQUENCE = 1; public static final int CHOICE = 2; public static final int LEAF = 4; public static final int UNBOUNDED = Integer.MAX_VALUE; /** * @return one of SEQUENCE, CHOICE, LEAF */ public int getKind(); /** * @return one of 0 or 1. */ public int getMinOccurs(); /** * @return one of 1 or UNBOUNDED. */ public int getMaxOccurs(); /** * @return if SEQUENCE or CHOICE return array of sub-models; otherwise undefined. */ public IModel[] getContents(); /** * @return if LEAF return atom; otherwise undefined. */ public IAtom getLeaf(); /** * @return if SEQUENCE or CHOICE return "," and "|", respectively; otherwise undefined. Useful when printing model. */ public String getOperator(); /** * @return one of "", "?", "*" or "+". Useful when printing model. */ public String getQualifier(); /** * Convert content model to string representation. */ public String stringRep(); /** * Convert the model to an Nfm on demand. * * @return Nfm */ public Nfm toNfm(); }